package com.lkk.util;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.lang.StringUtils;

import com.base.Constant;
/**
 * 加密工具类
 * @author admin
 *
 */
public class EncryptUtil {

	private static byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8 };

	/**
	 * des加密 加密以 byte[] 明文输入 ,byte[] 密文输出
	 *
	 * @author: j
	 * @date: 2014-8-21
	 *
	 * @param encryptBytes
	 *            :要加密的字节数组
	 * @param encryptKey
	 *            ：秘钥，只能是八位字母和数字的组合
	 * @return
	 * @throws Exception
	 */
	public static byte[] encryptDES(byte[] encryptBytes, String encryptKey)
			throws Exception {
		IvParameterSpec zeroIv = new IvParameterSpec(iv);
		SecretKeySpec key = new SecretKeySpec(encryptKey
				.getBytes(Constant.UTF8), "DES");
		Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
		cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);
		byte[] encryptedData = cipher.doFinal(encryptBytes);

		return Base64Util.Encode(encryptedData);
	}

	/**
	 * @author: j
	 * @date: 2014-8-21
	 *
	 * @param decryptBytes
	 *            ：要解密的字节数组
	 * @param decryptKey
	 *            ：解密的秘钥，只能是八位字母和数字的组合
	 * @return
	 * @throws Exception
	 */
	public static byte[] decryptDES(byte[] decryptBytes, String decryptKey)
			throws Exception {
		byte[] byteMi = Base64Util.decode(decryptBytes);
		IvParameterSpec zeroIv = new IvParameterSpec(iv);
		SecretKeySpec key = new SecretKeySpec(decryptKey
				.getBytes(Constant.UTF8), "DES");
		Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
		cipher.init(Cipher.DECRYPT_MODE, key, zeroIv);
		byte decryptedData[] = cipher.doFinal(byteMi);
		return decryptedData;
	}

	/**
	 * MD5加密 2014-9-25
	 *
	 * @param plainText
	 * @return
	 * @throws NoSuchAlgorithmException
	 *             String
	 * @throws UnsupportedEncodingException
	 */
	public static String Md5(String plainText) throws NoSuchAlgorithmException,
			UnsupportedEncodingException {
		MessageDigest md = MessageDigest.getInstance("MD5");
		md.update(plainText.getBytes(Constant.UTF8));
		byte b[] = md.digest();

		int i;

		StringBuffer buf = new StringBuffer(StringUtils.EMPTY);
		for (int offset = 0; offset < b.length; offset++) {
			i = b[offset];
			if (i < 0) {
				i += 256;
			}
			if (i < 16) {
				buf.append("0");
			}
			buf.append(Integer.toHexString(i));
		}

		return buf.toString();
	}

	public static void main(String[] args) {
		try{

			System.out.println(Md5("3f0f9fcf-adbb-4a81-8c10-92fd6061afd3123456"));

		}catch(Exception e){

		}
	}

}
